iT邦幫忙

2021 iThome 鐵人賽

DAY 17
3

I/O運作

tags: IT鐵人

I/O裝置

所謂的I/O裝置,就是input/output的裝置,負責輸出跟輸入資料,比如說鍵盤跟螢幕,或是網路等等的裝置,有時候我們需要通知這些裝置做事,就有幾個方法可以實行,分別是polling I/O, Interrupted I/O以及DMA,前兩者的前面六個步驟都相同,依序是下列六步:

No. Action
1 User process發出I/O request給OS
2 OS收到請求,可能暫停此process執行,並執行相對應的system calls。
3 kernel的I/O-subsystem會pass此請求給Device driver。
4 Device driver依此請求設定對應的I/O commands參數給Device Controller。
5 Device Controller啟動,監督I/O-Device之I/O運作進行。
6 在此時,OS可能將CPU切給另外一個process執行。

後面依序介紹三種I/O處理方式,三種的差別在於I/O動作結束之後怎麼告知OS,讓自己取得I/O結果。

Polling I/O

Polling I/O稱為詢問式I/O,CPU在執行其他Process的過程時要不斷去pollling Device Controller確認I/O動作是否完成。

通常實作的方式會使用幾個bit,負責表示I/O動作完成或是出現錯誤,CPU每次只要檢查這幾個bit就好,處理完成後再把這些bit重設。

Polling I/O因為需要花大量的時間去polling Device Controller上,花在process execution的時間就相對被壓縮,所以適合用在Device執行很快的情況,如此一來才不會有一堆需要詢問的Device占用CPU時間。

Interrputed I/O

Interrupted I/O的做法是在I/O動作完成後,發出一個I/O Completed的Interrupt通知OS,CPU再花時間來尋找是哪個I/O完成並且處理之。

Interrupt的好處是不用一直花時間polling,能夠提升CPU utilization。不過要是I/O Device的處理方式很快,則會一直被interrupt,所以適合用在I/O Device有一定處理時間的裝置。

DMA I/O

DMA I/O的全名為Direct Memory Access,他的做法是把I/O的處理交給另一個硬體,讓他直接存取記憶體以便他直接把處理好的結果放在該放的位置。

DMA I/O的好處是可以很大幅度的提高CPU utilization。缺點是需要另外設計一個硬體處理I/O,並且DMA I/O還是會跟CPU搶Memory的使用權。

白話說明I/O種類

其實我們可以把這個假設成工作中途煮開水:

  • Polling I/O就是時不時過去看看水滾了沒。
  • Interrupted I/O就是水開了之後會發出高頻率的叫聲,像是以前的水壺會裝上一個通知水滾的尖嘴。
  • DMA I/O就是雇用了一個傭人幫忙煮開水,好了就拿過來主人的身邊。
上一篇 下一篇
OS初體驗 Kernel Mode


上一篇
Day-16 OS初體驗
下一篇
Day-18 Kernel Mode
系列文
杰哥的考研紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言